module et {
    export abstract class IRegistSystem {
        get Type() {
            return Object.getPrototypeOf(this);
        }
        abstract run(o,isRegist:boolean);
    }
    export abstract class RegistSystem<T> extends IRegistSystem {
        run(o,isRegist:boolean): void {
            this.regist(o,isRegist);
        }
        abstract regist(self: T,isRegist:boolean): void;
    }
}